#ifndef CConst_H
#define CConst_H

class CConst
{
public:
    /**************************************************************************************/
    /**** CoordinateSystem                                                             ****/
    /**************************************************************************************/
    enum CoordinateSystem{ // xxxxxxxxxxxxx not used yet
        CoordUndefined,       /* No coordinate system currently defined                   */
        CoordGeneric,         /* Generic coordinate system                                */
        CoordUTM,             /* UTM coordinate system                                    */
        CoordLONLAT           /* LON-LAT coordinate system                                */
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Modes                                                                        ****/
    /**************************************************************************************/
    enum Mode {
        noGeomMode,           /* No geometry currently defined                            */
        editGeomMode,         /* Edit geometry                                            */
        simulateMode          /* Run simulation                                           */
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** File Modes                                                                   ****/
    /**************************************************************************************/
    enum FileMode {
        readFileMode,         /* Read From File                                           */
        saveFileMode          /* Save To File                                             */
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** CoverageType                                                                 ****/
    /**************************************************************************************/
    enum CoverageType {
        layerCoverage,
        levelCoverage,
        sirLayerCoverage,
        pagingAreaCoverage
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** AntennaType                                                                  ****/
    /**************************************************************************************/
    enum AntennaType {
        antennaOmni,
        antennaLUT_H,
        antennaLUT_V,
        antennaLUT
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** PropModelType                                                                ****/
    /**************************************************************************************/
    enum PropModelType {
        PropExpo,
        PropRSquared,
        PropPwLin,
        PropTerrain,
        PropRd,
        PropSegment,
        PropSegmentWithTheta,
        PropSegmentAngle,
        PropClutterSimp,
        PropClutterFull,
        PropClutterSymFull,
        PropClutterWtExpo,
        PropClutterWtExpoSlope,
        PropClutterGlobal,
        PropClutterExpoLinear
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** PropModelFlag                                                                ****/
    /**************************************************************************************/
    enum PropModelFlag {
        PropFlagIndividual,
        PropFlagGlobal,
        PropFlagGlobalNoRTD
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** NumericTypes                                                                 ****/
    /**************************************************************************************/
    enum NumericType {
        NumericInt,
        NumericDouble
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** TechnologyType                                                               ****/
    /**************************************************************************************/
    enum TechnologyType {
        PHS,
        WCDMA,
        CDMA2000,
        WLAN
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Language                                                                     ****/
    /**************************************************************************************/
    enum Language {
        none,
        en,
        zh
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** DistributionType                                                             ****/
    /**************************************************************************************/
    enum DistributionType {
        ExpoDist,
        UnifDist
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** EventType                                                                    ****/
    /**************************************************************************************/
    enum EventType {
        RequestEvent,
        HangupEvent,
        DropEvent,
        HandoverEvent,
        SegmentRequestEvent,
        SegmentHangupEvent,
        ACHideSectorEvent,
        ACUseSectorEvent
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** ScanType                                                                     ****/
    /**************************************************************************************/
    enum ScanType {
        NullScan = (int) 0xFFFFFF00,
        EdgeScan = (int) 0xFFFFFE00
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Dynamic Channel Assignment Algorithm                                         ****/
    /**************************************************************************************/
    enum DynamicChannelAssignmentAlgorithm {
        SIRDCA,
        IntDCA,
        SIRIntDCA,
        IntSIRDCA,
        MelcoDCA
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Mechanism of Block of an Call                                                ****/
    /**************************************************************************************/
    enum MechanismDrop {
        RSSIMec,
        SIRMec,
        INTMec
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** CSID Fields                                                                  ****/
    /**************************************************************************************/
    enum CSIDField {
        CSIDPagingArea,
        CSIDGateway,
        CSIDCSC,
        CSIDCS
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** CSID Format                                                                  ****/
    /**************************************************************************************/
    enum CSIDFormat {
        CSID19NP,             /* Old format of CSID, use in most chinese PHS net          */
        CSID16NP              /* Sugest new format of CSID, develop for chile PHS net     */
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** PWR Units                                                                    ****/
    /**************************************************************************************/
    enum PWRUnit {
        PWRdBm,
        PWRdBW,
        PWRdBuV_107,
        PWRdBuV_113
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** File Types                                                                   ****/
    /**************************************************************************************/
    enum FileType {
        geometryFileType,
        reportFileType
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Sort Types                                                                   ****/
    /**************************************************************************************/
    enum SortType {
        byPwrSort,
        bySectorSort 
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Sector Int Parameters                                                        ****/
    /**************************************************************************************/
    enum SectorIntParam {
        SectorPagingArea
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** View Preference Parameters                                                   ****/
    /**************************************************************************************/
    enum ViewPreferences {
        CellIdxRef,
        CellCSNumberRef,
        CellHexCSIDRef,
        CellPagingArea,
        RTDbyCell,
        RTDbyLevel
    };
    /**************************************************************************************/

    /**************************************************************************************/
    /**** Global Parameters                                                            ****/
    /**************************************************************************************/
    enum GParam {
        antenna_num_interp_pts = 400,
        select_cell_expand = 4
    };
    /**************************************************************************************/
};

#endif
